package cn.java.sy;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;

public class FilePathUtil {

	public static String GetFileSize(File file) {
		String size = "";
		if (file.exists() && file.isFile()) {
			long fileS = file.length();
			DecimalFormat df = new DecimalFormat("#.00");
			if (fileS < 1024) {
				size = df.format((double) fileS) + "B";
			} else if (fileS < 1048576) {
				size = df.format((double) fileS / 1024) + "KB";
			} else if (fileS < 1073741824) {
				size = df.format((double) fileS / 1048576) + "MB";
			} else {
				size = df.format((double) fileS / 1073741824) + "GB";
			}
		} else if (file.exists() && file.isDirectory()) {
			size = "";
		} else {
			size = "0B";
		}
		return size;
	}

	

	
	public static String getResourcePath() {
		String filePath = "";
		if ("".equals(filePath)) {
			String result = FilePathUtil.class.getResource("FilePathUtil.class").toString();
			int index = result.indexOf("WEB-INF");
			if (index == -1) {
				index = result.indexOf("bin");
			}
			if (index != -1) {
				result = result.substring(0, index);
			}
			if (result.startsWith("jar")) {
				int k = result.indexOf("jar");
				result = result.substring(k + 10);
			} else if (result.startsWith("file")) {
				int k = result.indexOf("file");
				result = result.substring(k + 6);
			} else if (result.startsWith("zip:")) {
				int k = result.indexOf("zip");
				result = result.substring(k + 5);
			}
			result = result.replace("%20", " ");
			filePath = "/" + result;
		}
		return filePath;
	}
  
	// /usr/local/tomcat/* \
	public static void printFile(File file) {
		if (file.isFile()) {// 表示该文件不是文件夹
			if (!".DS_Store".equals(file.getName())) {
				System.out.println(file.getPath() + " \\");
			}
		} else {
			// 首先得到当前的路径
			String[] childFilePaths = file.list();
			for (String childFilePath : childFilePaths) {
				File childFile = new File(file.getAbsolutePath() + File.separator + childFilePath);
				printFile(childFile);
			}
			// System.out.println(file.getPath()+"/"+file.getName()+" \\");
		}
	}

	/**
	 * 通过递归调用删除一个文件夹及下面的所有文件
	 * 
	 * @param file
	 */
	public static void deleteFile(File file) {
		if (file.isFile()) {// 表示该文件不是文件夹
			file.delete();
		} else {
			// 首先得到当前的路径
			String[] childFilePaths = file.list();
			for (String childFilePath : childFilePaths) {
				File childFile = new File(file.getAbsolutePath() + File.separator + childFilePath);
				deleteFile(childFile);
			}
			file.delete();
		}
	}

	// 复制文件
	public static void copyFile(File sourceFile, File targetFile) throws IOException {
		// 新建文件输入流并对它进行缓冲
		FileInputStream input = new FileInputStream(sourceFile);
		BufferedInputStream inBuff = new BufferedInputStream(input);

		// 新建文件输出流并对它进行缓冲
		FileOutputStream output = new FileOutputStream(targetFile);
		BufferedOutputStream outBuff = new BufferedOutputStream(output);

		// 缓冲数组
		byte[] b = new byte[1024 * 5];
		int len;
		while ((len = inBuff.read(b)) != -1) {
			outBuff.write(b, 0, len);
		}
		// 刷新此缓冲的输出流
		outBuff.flush();

		// 关闭流
		inBuff.close();
		outBuff.close();
		output.close();
		input.close();
	}

	// 复制文件夹
	public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {

		// 新建目标目录
		(new File(targetDir)).mkdirs();
		// 获取源文件夹当前下的文件或目录
		File[] file = (new File(sourceDir)).listFiles();
		if (file != null) {
			for (int i = 0; i < file.length; i++) {
				if (file[i].isFile()) {
					// 源文件
					File sourceFile = file[i];
					// 目标文件
					File targetFile = new File(
							new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
					copyFile(sourceFile, targetFile);
				}
				if (file[i].isDirectory()) {
					// 准备复制的源文件夹
					String dir1 = sourceDir + "/" + file[i].getName();
					// 准备复制的目标文件夹
					String dir2 = targetDir + "/" + file[i].getName();
					copyDirectiory(dir1, dir2);
				}
			}

		}

	}

	public static void main(String[] s) {

		// String ss =
		// "http://10.32.3.13:8080/cloudshield/templates/qr/BOCOgoogleAuthCode_tangww_ROOT.png";
		// int k = ss.indexOf("templates");
		// System.out.println(ss.substring(k, ss.length()));

	

	}
}